package d1_exception;

/*
 *  1、异常是用来查询系统Bug的关键参考信息
 *  2、异常可以作为方法内部一种特殊的返回值, 以便通知上层调用者底层的执行情况
 *
 * */


public class ExceptionDemo02 {
    public static void main(String[] args) {
        //目标: 搞清楚异常的作用
        System.out.println("开始。。。");
        try {
            //监视代码
            System.out.println(divide(10, 0));
            System.out.println("成功了");
            //下面的 e 就是下面抛的异常对象 在调用方法打印异常信息
        } catch (Exception e) {//拦截抛上来的异常,并进行打印
            System.out.println("失败了");
            //捕获异常, 并打印异常信息
            e.printStackTrace();//打出这个异常信息----->线程打印机制,不用管
        }


        System.out.println("结束。。。");
    }

    //硬造场景:两个数做除法
    public static int divide(int a, int b) {
        //尽量避免异常
        if (b == 0) {
            System.out.println("参数有问题~~~");
            //抛出一个异常作为返回值, 通知上层, 这里出现的bug
            throw new RuntimeException("/ by Zero");//抛上去,上面再抛给虚拟机,然后JVN再把程序给干掉
        }

        int c = a / b;
        return c;
    }
}
